/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package sv.com.intesal.compra.managed;

import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import org.primefaces.event.SelectEvent;
import sv.com.intesal.clases.abstracts.ViewScopedAbstract;
import sv.com.intesal.clases.others.FormularioName.COMPRA.Consultas;
import sv.com.intesal.compra.bean.Linea;
import sv.com.intesal.compra.bean.Marca;
import sv.com.intesal.compra.bean.Producto;
import sv.com.intesal.compra.bean.ProductoSucursal;
import sv.com.intesal.compra.bean.SubLinea;
import sv.com.intesal.compra.bean.TipoProducto;
import sv.com.intesal.compra.bean.Unidad;
import sv.com.intesal.compra.controlador.ProductoControlador;
import sv.com.intesal.compra.controlador.SubLineaControlador;
import sv.com.intesal.general.bean.Sucursal;

/**
 *
 * @author ejerez
 */
@ManagedBean(name = "consultaProductoManaged")
public class ConsultaProductoManaged extends ViewScopedAbstract {

    /*PRODUCTO*/
    private Producto selectedEncaProducto;
    private Producto selectedDetaProducto;
    private List<Producto> productos;

    /*PRODUCTO_SURUCSAL*/
    private ProductoSucursal selectedProductoSucursal;
    private List<ProductoSucursal> productoSucursales;

    /*COMBO BOXES*/
    private List<Marca> marcas;
    private List<TipoProducto> tipoProductos;
    private List<Unidad> unidades;
    private List<Linea> lineas;
    private List<SubLinea> subLineas;
    private List<Sucursal> sucursales;

    public ConsultaProductoManaged() {
        this.selectedDetaProducto = new Producto();
        this.selectedEncaProducto = new Producto();

        this.selectedProductoSucursal = new ProductoSucursal();

        this.selectedEncaProducto.setProductoSucursales(new ArrayList<ProductoSucursal>());
        this.selectedEncaProducto.getProductoSucursales().add(new ProductoSucursal());

        /*List<ProductoSucursal> lista = new ArrayList<ProductoSucursal>();
        lista.add(new ProductoSucursal());
        this.selectedEncaProducto.setProductoSucursales(lista);*/

        this.fillComboBox();
    }

    private void fillComboBox() {
        try {
            ProductoControlador pc = new ProductoControlador();
            ProductoControlador.ComboBox cb = pc.new ComboBox();

            if (marcas == null) {
                marcas = cb.getMarcasActivos();
            }
            if (tipoProductos == null) {
                tipoProductos = cb.getTipoProductosActivos();
            }
            if (unidades == null) {
                unidades = cb.getUnidadesActivos();
            }
            if (lineas == null) {
                lineas = cb.getLineas();
            }
            if (subLineas == null) {
                subLineas = cb.getSubLineas(this.lineas.get(0).getCodigo_l());
            }

            if (sucursales == null) {
                sucursales = cb.getSucursalesActivos();
            }
        } catch (Exception e) {
            e.printStackTrace();
            m.messageError(m.getIerror());
        }
    }

    public void llenarSubLinea() {
        try {
            SubLineaControlador sl = new SubLineaControlador();
            this.subLineas = sl.getSubLineaActivos_x_Linea(this.selectedEncaProducto.getCodigo_l());
        } catch (Exception e) {
            e.printStackTrace();
            m.messageError(m.getIerror());
        }
    }

    public void buscarGrid() {
        try {
            if (sm.validar_rol_usuario(Consultas.wfrmConsultaProducto, sm.buscar) == true) {
                ProductoControlador pc = new ProductoControlador();
                this.productos = pc.getConsultaProductosActivos(this.selectedEncaProducto);
            }
        } catch (Exception e) {
            e.printStackTrace();
            m.messageError(m.getIerror());
        }
    }

    public void llenar_tableDeta(SelectEvent event) {
        Producto p = ((Producto) event.getObject());

        try {
            this.productoSucursales = p.getProductoSucursales();
        } catch (Exception e) {
            m.message(m.getIerror());
            e.printStackTrace();
        }
    }

    /*SETETRS AND GETTERS*/
    public List<Linea> getLineas() {
        return lineas;
    }

    public void setLineas(List<Linea> lineas) {
        this.lineas = lineas;
    }

    public List<Marca> getMarcas() {
        return marcas;
    }

    public void setMarcas(List<Marca> marcas) {
        this.marcas = marcas;
    }

    public List<Producto> getProductos() {
        return productos;
    }

    public void setProductos(List<Producto> productos) {
        this.productos = productos;
    }

    public Producto getSelectedDetaProducto() {
        if (selectedDetaProducto == null) {
            selectedDetaProducto = new Producto();
        }
        return selectedDetaProducto;
    }

    public void setSelectedDetaProducto(Producto selectedDetaProducto) {
        this.selectedDetaProducto = selectedDetaProducto;
    }

    public Producto getSelectedEncaProducto() {
        if (selectedEncaProducto == null) {
            selectedEncaProducto = new Producto();
        }
        return selectedEncaProducto;
    }

    public void setSelectedEncaProducto(Producto selectedEncaProducto) {
        this.selectedEncaProducto = selectedEncaProducto;
    }

    public List<SubLinea> getSubLineas() {
        return subLineas;
    }

    public void setSubLineas(List<SubLinea> subLineas) {
        this.subLineas = subLineas;
    }

    public List<Sucursal> getSucursales() {
        return sucursales;
    }

    public void setSucursales(List<Sucursal> sucursales) {
        this.sucursales = sucursales;
    }

    public List<TipoProducto> getTipoProductos() {
        return tipoProductos;
    }

    public void setTipoProductos(List<TipoProducto> tipoProductos) {
        this.tipoProductos = tipoProductos;
    }

    public List<Unidad> getUnidades() {
        return unidades;
    }

    public void setUnidades(List<Unidad> unidades) {
        this.unidades = unidades;
    }

    public List<ProductoSucursal> getProductoSucursales() {
        return productoSucursales;
    }

    public void setProductoSucursales(List<ProductoSucursal> productoSucursales) {
        this.productoSucursales = productoSucursales;
    }

    public ProductoSucursal getSelectedProductoSucursal() {
        if (selectedProductoSucursal == null) {
            selectedProductoSucursal = new ProductoSucursal();
        }
        return selectedProductoSucursal;
    }

    public void setSelectedProductoSucursal(ProductoSucursal selectedProductoSucursal) {
        this.selectedProductoSucursal = selectedProductoSucursal;
    }
}
